/*
 * @(#)ReplaceChars.java	02/11/22
 *
 * Copyright 2002 JangMedia Interactive, Inc. All rights reserved.
 * Created by Lee Jeong Woo
 *
 */

package com.ubst.smartad.common;

public class ReplaceChars
{

	private static boolean debug = false;
	
	/*  usage
	 *	ReplaceChars.replace(
				변환할 대상,
				변환시킬 String,
				변환될 String,
			)
	 */
	public static String replace( String org, String src, String dest )
	{
		if(org==null){
			return "";
		}
		int len = org.length();
		if( len <= 0 ) return org;
		
		StringBuffer sb = new StringBuffer();
		try
		{
			int idx = org.indexOf(src);
			if(idx == -1 ) return org;
			
			String tmp = org; //value copy
			
			while(idx < len)
			{
				idx = tmp.indexOf(src);

				if(idx == -1) //두번째부터 적용
				{
					sb.append(tmp);
					break;
				}
				
				sb.append(tmp.substring(0,idx)).append(dest);
				
				tmp = tmp.substring(idx+src.length()); //루프를 돌면서 사용				
				
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return org;
		}
		
		return sb.toString();
	}

	/* KJH 단어 하나만 변경 */
	public static String replaceOne( String org, String src, String dest )
	{
		if(org==null){
			return "";
		}
		int len = org.length();
		if( len <= 0 ) return org;
		
		StringBuffer sb = new StringBuffer();
		try
		{
			int idx = org.indexOf(src);
			if(idx == -1 ) return org;

			String tmp = org; //value copy
			
			if(idx<len){
				sb.append(tmp.substring(0,idx)).append(dest);
				tmp = tmp.substring(idx+src.length());
				sb.append(tmp);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return org;
		}
		
		return sb.toString();
	}

	/* KJH 대소문자를 구분하지 않고 동일한 내용을 변경한다. */
	public static String replaceAll( String org, String src, String dest )
	{
		if(org==null){
			return "";
		}
		int len = org.length();
		if( len <= 0 ) return org;
		
		src = src.toLowerCase();

		StringBuffer sb = new StringBuffer();
		try
		{
			int idx = org.indexOf(src);
			if(idx == -1 ) return org;
			
			String tmp = org.toLowerCase(); // 소문자로 변경한값
			String tmp1 = org;				// 실제 값
			
			while(idx < len)
			{
				idx = tmp.indexOf(src);

				if(idx == -1) //두번째부터 적용
				{
					sb.append(tmp1);
					break;
				}
				
				sb.append(tmp1.substring(0,idx)).append(dest);
				
				tmp = tmp.substring(idx+src.length()); //루프를 돌면서 사용				
				tmp1 = tmp1.substring(idx+src.length()); //루프를 돌면서 사용				
				
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return org;
		}
		
		return sb.toString();
	}

}
